package com.zhijian.medical.service;

import com.zhijian.medical.entity.po.ExperimentProcessSampleReady;
import com.zhijian.medical.entity.vo.request.ExperimentProcessSampleReadySaveOrUpdateOutVo;
import com.zhijian.medical.entity.vo.request.ExperimentProcessSampleReadySaveOrUpdateVo;
import com.zhijian.medical.entity.vo.request.ExperimentProcessSampleReadySearchVo;
import com.zhijian.medical.entity.vo.request.SampleReadySaveOrUpdateVo;
import com.zhijian.medical.entity.vo.response.ExperimentProcessSampleReadyListVo;
import com.zhijian.medical.entity.vo.response.ExperimentProcessSampleReadyVo;
import com.zhijian.medical.util.Page;

import java.util.List;

/**
 * 实验流程-样本准确区详情 业务处理层
 *
 * @author HCG
 * @version 1.0
 * @date 2022-04-17 17:33:53
 */
public interface ExperimentProcessSampleReadyService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    ExperimentProcessSampleReady selectById(Long id);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    ExperimentProcessSampleReadyVo selectVoById(Long id);

    /**
     * 主键查询listVo
     *
     * @param id
     * @return
     */
    ExperimentProcessSampleReadyListVo selectListVoById(Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 根据实验流程id进行删除
     *
     * @param experimentProcessId
     * @return
     */
    void deleteByExperimentProcessId(Long experimentProcessId);

    /**
     * 新增
     *
     * @param experimentProcessSampleReady
     * @return
     */
    Long insert(ExperimentProcessSampleReady experimentProcessSampleReady);

    /**
     * 新增
     *
     * @param experimentProcessSampleReadySaveOrUpdateVo
     * @return
     */
    Long insert(ExperimentProcessSampleReadySaveOrUpdateVo experimentProcessSampleReadySaveOrUpdateVo);

    /**
     * 更改
     *
     * @param experimentProcessSampleReady
     * @return
     */
    boolean update(ExperimentProcessSampleReady experimentProcessSampleReady);

    /**
     * 更改
     *
     * @param sampleReadySaveOrUpdateVo
     * @return
     */
    boolean update(SampleReadySaveOrUpdateVo sampleReadySaveOrUpdateVo);

    /**
     * 动态修改
     *
     * @param record
     * @return
     */
    boolean updateByPrimaryKeySelective(ExperimentProcessSampleReady record);

    /**
     * 总数
     *
     * @param experimentProcessSampleReadySearchVo
     * @return
     */
    Integer count(ExperimentProcessSampleReadySearchVo experimentProcessSampleReadySearchVo);

    /**
     * 列表
     *
     * @param experimentProcessSampleReadySearchVo
     * @return
     */
    List<ExperimentProcessSampleReadyListVo> selectList(ExperimentProcessSampleReadySearchVo experimentProcessSampleReadySearchVo);

    /**
     * 分页查询
     *
     * @param experimentProcessSampleReadySearchVo
     * @return
     */
    Page<ExperimentProcessSampleReadyListVo> selectPage(ExperimentProcessSampleReadySearchVo experimentProcessSampleReadySearchVo);

    /**
     * 根据实验流程id查询vo
     *
     * @param experimentProcessId
     * @return
     */
    ExperimentProcessSampleReadyVo selectVoByExperimentProcessId(Long experimentProcessId);

    /**
     * 保存详情数据，并且修改样本的状态
     *
     * @param experimentProcessSampleReadySaveOrUpdateOutVo
     * @return
     */
    boolean saveDetail(ExperimentProcessSampleReadySaveOrUpdateOutVo experimentProcessSampleReadySaveOrUpdateOutVo);

    /**
     * 保存
     *
     * @param sampleReadySaveOrUpdateVo
     * @return
     */
    boolean save(SampleReadySaveOrUpdateVo sampleReadySaveOrUpdateVo);
}